home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / share / doc / libcairo-perl / examples / simple.pl < prev   
Encoding:
Perl Script  |  2006-11-04  |  1.3 KB  |  75 lines

  1. #!/usr/bin/perl
  2.  
  3. #
  4. # $Header: /cvs/cairo/cairo-perl/examples/simple.pl,v 1.3 2006/06/03 14:21:10 tsch Exp $
  5. #
  6.  
  7. use strict;
  8. use warnings;
  9. use Cairo;
  10.  
  11. use constant
  12. {
  13.     IMG_WIDTH => 640,
  14.     IMG_HEIGHT => 480,
  15.     M_PI => 3.14159265,
  16. };
  17.  
  18. die "png backend not supported" unless (Cairo::HAS_PNG_FUNCTIONS);
  19.  
  20. $0 =~ /(.*)\.pl/;
  21. my $png = "$1.png";
  22.  
  23. my $surf = Cairo::ImageSurface->create ('argb32', IMG_WIDTH, IMG_HEIGHT);
  24. my $cr = Cairo::Context->create ($surf);
  25.  
  26. $cr->rectangle (0, 0, IMG_WIDTH, IMG_HEIGHT);
  27. $cr->set_source_rgba (1, 1, 1, 0.5);
  28. $cr->fill;
  29.  
  30. # black
  31. $cr->save;
  32. $cr->set_source_rgba (0, 0, 0, 0.5);
  33. $cr->translate (IMG_WIDTH / 2, IMG_HEIGHT - (IMG_HEIGHT / 4));
  34. do_star ();
  35. $cr->restore;
  36.  
  37. # red
  38. $cr->save;
  39. $cr->set_source_rgba (1, 0, 0, 0.5);
  40. $cr->translate (IMG_WIDTH / 2, IMG_HEIGHT / 4);
  41. do_star ();
  42. $cr->restore;
  43.  
  44. # green
  45. $cr->save;
  46. $cr->set_source_rgba (0, 1, 0, 0.5);
  47. $cr->translate (IMG_WIDTH / 4, IMG_HEIGHT / 2);
  48. do_star ();
  49. $cr->restore;
  50.  
  51. # blue
  52. $cr->save;
  53. $cr->set_source_rgba (0, 0, 1, 0.5);
  54. $cr->translate (IMG_WIDTH - (IMG_WIDTH / 4), IMG_HEIGHT / 2);
  55. do_star ();
  56. $cr->restore;
  57.  
  58. $cr->show_page;
  59.  
  60. $surf->write_to_png ($png);
  61.  
  62. sub do_star
  63. {
  64.     my $mx = IMG_WIDTH / 3.0;
  65.     my $count = 100;
  66.     foreach (0..$count-1)
  67.     {
  68.         $cr->new_path;
  69.         $cr->move_to (0, 0);
  70.         $cr->rel_line_to (-$mx, 0);
  71.         $cr->stroke;
  72.         $cr->rotate ((M_PI * 2) / $count);
  73.     }
  74. }
  75.